A service provider is an entity (e.g., a business or an organization) that sells bandwidth provided by or access to a network (e.g., the Internet, a data network, a telecommunication network, etc.) associated with the service provider. Service providers may include telecommunications companies, data carriers, wireless communications providers, Internet service providers, cable television operators offering high-speed Internet access, etc. The rapid growth in the use of content, such as, for example, video, audio, images, and software downloads, is creating much higher bandwidth demands on service providers, with sharp peaks around viral content and events.
The content may be served to a client device from servers, such as origin servers, mirror servers, cache servers, etc., installed across a service provider's network. A client device may request access to such content using Internet protocols, such as a hypertext transfer protocol (HTTP), a real time messaging protocol (RTMP), etc. When the client device requests access to the content, the request must be routed to an appropriate server in the network. Routing the request takes into consideration several factors, such as improving the client device's experience (e.g., latency, speed of content transfer, etc.), cost and scalability of the network and content delivery infrastructure, etc. However, routing requests to appropriate servers is becoming more and more problematic for service providers since the complexity and load variability of service provider networks are increasing. Furthermore, the number and type of client devices, as well as the amount of content, are rapidly growing. In addition, service providers need to federate their services in order to offer a worldwide solution.
In order to address such problems, service providers currently deploy different types of solutions, such as a domain name system (DNS)-based solution, a border gateway protocol (BGP)-based solution, and an application level-based solution. Each solution provides an overlay on top of existing network routing infrastructure with manual provisioning. Manual provisioning involves the service provider advertising Internet protocol (IP) addresses of servers. For larger types of content (e.g., video, downloads, etc.), the solutions do not provide any opportunity to further optimize routing within the context of a single request. The solutions also do not function well in an environment where service providers need to federate their services.
In the DNS-based solution, a client device typically performs a DNS lookup to resolve a domain name to an IP address. A DNS service is specialized to dynamically select a server IP address based on factors like geo-locality, server load, content location, etc. However, the DNS-based solution provides for coarse-grain routing at only the domain level.
In the BGP-based solution, a given server IP address is supported in multiple locations. For example, each different region may include a server with the same IP address, and the servers may advertise the IP address. However, the BGP-based solution provides for coarse-grain routing at only the server level, and does not handle network problems (e.g., congestion, server failure, etc.) particularly well.
With the application level-based solution, a server can redirect, via, for example, in the HTTP protocol, a client device to a different server. For example, some service providers deploy content servers in their networks at the application level. The application level-based solution may be performed by explicitly routing (e.g., via DNS or BGP) a content request to a content router implemented at the application level. Another example of application level routing includes a portal server embedding different uniform resource locators (URLs) in a HyperText Markup Language (HTML) page, returned by the portal server, based on where a content request originates.
However, the application level-based solution increases latency for the client device due to the extra routing and connection setup associated with the content server. Furthermore, the application level-based solution is difficult to scale, and the content server may become a bottleneck for a network if all requests must be routed to the content server.